﻿Imports Publics
Imports System.Windows.Forms.Keys
 
Public Class clsDSPhimTatDefault

    Public Sub New()

    End Sub

    Public Shared Sub UpdatePhimTat(ByVal Ma As String, ByVal Ten As String, ByVal TenNgan As String, ByVal DienGiai As String, ByVal KeyFn As Integer, ByVal KeyCode As Integer, ByVal Nhom As String)
        Dim obj As SYS_PhimTat = (From ds In dbTV.SYS_PhimTats Where ds.InUsed AndAlso ds.MaNut = Ma Select ds).FirstOrDefault
        If obj Is Nothing Then
            obj = New SYS_PhimTat
            With obj
                .MaNut = Ma
                .TenNut = Ten
                .TenNgan = TenNgan
                .DienGiai = DienGiai
                .KeyCode = KeyCode
                .KeyFn = KeyFn
                .Nhom = Nhom
                '
                .InUsed = True
                .EditedOn = dbTV.GetDateTimeServer
                dbTV.SYS_PhimTats.InsertOnSubmit(obj)
            End With
        Else
            With obj
                .MaNut = Ma
                .TenNut = Ten
                .TenNgan = TenNgan
                .DienGiai = DienGiai
                .KeyCode = KeyCode
                .KeyFn = KeyFn
                .Nhom = Nhom
                '
                .InUsed = True
                .EditedOn = dbTV.GetDateTimeServer
            End With
        End If
        iSubmitChange()
    End Sub

    Private Const VmsNET As String = "Phím tắt chung"
    Private Const FormCapNhat As String = "Form cập nhật"
    Private Const FormChonHDLamVCBX As String = "Form chọn hóa đơn làm vận chuyển bốc xếp"
    Private Const HDBanLe As String = "Form hóa đơn bán lẻ"

    Public Shared Sub ResetToDefault()
        ConnectToDB()
        'Xóa thằng thừa này đi. Có db vẫn còn
        Dim objSELECT_PRODUCT As SYS_PhimTat = (From ds In dbTV.SYS_PhimTats Where ds.MaNut = "SELECT_PRODUCT" Select ds).FirstOrDefault
        If objSELECT_PRODUCT IsNot Nothing Then
            dbTV.SYS_PhimTats.DeleteOnSubmit(objSELECT_PRODUCT)
            iSubmitChange()
        End If
        Dim objROUND_DOWN As SYS_PhimTat = (From ds In dbTV.SYS_PhimTats Where ds.MaNut = "ROUND_DOWN" Select ds).FirstOrDefault
        If objROUND_DOWN IsNot Nothing Then
            dbTV.SYS_PhimTats.DeleteOnSubmit(objROUND_DOWN)
            iSubmitChange()
        End If
        Dim objROUND_UP As SYS_PhimTat = (From ds In dbTV.SYS_PhimTats Where ds.MaNut = "ROUND_UP" Select ds).FirstOrDefault
        If objROUND_UP IsNot Nothing Then
            dbTV.SYS_PhimTats.DeleteOnSubmit(objROUND_UP)
            iSubmitChange()
        End If
        '
        UpdatePhimTat("ADD", "F2", "Thêm", "Thêm mới một bản ghi tại form chính", None, F2, VmsNET)
        UpdatePhimTat("EDIT", "F4", "Sửa", "Sửa một bản ghi trong form chính", None, F4, VmsNET)
        UpdatePhimTat("DELETE", "Ctrl & Delete", "Xoá", "Xóa một bản ghi trong form chính", Control, Delete, VmsNET)
        UpdatePhimTat("COPY", "F3", "Copy", "Copy", None, 114, VmsNET)
        UpdatePhimTat("REFRESH", "F5", "Làm tươi", "Làm tươi dữ liệu trên form", None, F5, VmsNET)
        UpdatePhimTat("INFO", "Ctrl & H", "Trợ giúp", "Thông tin - trợ giúp", Control, H, VmsNET)
        UpdatePhimTat("EXPORT", "Ctrl & E", "Xuất dữ liệu", "Xuất dữ liệu", Control, E, VmsNET)
        UpdatePhimTat("EXIT", "Escape", "Thoát", "Đóng form", None, Escape, VmsNET)
        UpdatePhimTat("FIND", "Ctrl & F", "Tìm", "TÌm kiếm", Control, F, VmsNET)
        UpdatePhimTat("ACCEPT", "F1", "Chọn", "Lựa chọn", None, F1, VmsNET)
        UpdatePhimTat("FINDNEXT", "F9", "Tìm tiếp", "TÌm kiềm tiếp", None, F9, VmsNET)
        UpdatePhimTat("PRINT", "Ctrl & P", "In", "In dữ liệu", Control, P, VmsNET)
        UpdatePhimTat("FILTERROW", "F8", "Tìm trên Grid", "Đặt Focus vào ô lọc dữ liệu trên grid", None, F8, VmsNET)
        UpdatePhimTat("SELECT_UNSELECT_ALL", "Ctrl & A", "Chọn/bỏ chọn tất cả", "Chọn/bỏ chọn tất cả", Control, A, VmsNET)

        '
        UpdatePhimTat("SAVECLOSE", "F7", "Lưu & Thoát", "Ghi và đóng", None, F7, FormCapNhat)
        UpdatePhimTat("SAVENEW", "F6", "Lưu & Thêm", "Ghi và thêm", None, F6, FormCapNhat)
        UpdatePhimTat("HACHTOAN", "Ctrl+H", "Hạch toán", "Hạch toán phiếu nhập xuất", Control, H, FormCapNhat)
        UpdatePhimTat("SAVEPRINT", "Ctrl & S", "Lưu & In", "Ghi và in", Control, S, FormCapNhat)
        UpdatePhimTat("CACULATOR", "F12", "Máy tính", "Máy tính", None, F12, FormCapNhat)
        UpdatePhimTat("INSERTROW", "Ctrl & Insert", "Chèn dòng", "Chèn dòng chi tiết trên hóa đơn nhập xuất phát hành", Control, Insert, FormCapNhat)
        UpdatePhimTat("TonKhoKhac", "F3", "Tồn kho khác", "Tồn kho khác", None, F3, FormCapNhat)
        UpdatePhimTat("ChietKhauBanHang", "F4", "Chiết khấu bán hàng", "Chiết khấu bán hàng", None, F4, FormCapNhat)
        UpdatePhimTat("XuatTheoHop", "F11", "Xuất theo hộp", "Xuất theo hộp", None, F11, FormCapNhat)
        UpdatePhimTat("TinhLaiTonKho", "F8", "Tính lại tồn kho", "Tính lại tồn kho", None, F8, FormCapNhat)
        UpdatePhimTat("ChietKhauMuaHang", "F9", "Chiết khấu mua hàng", "Chiết khấu mua hàng", None, F9, FormCapNhat)
        '
        UpdatePhimTat("ChonBoChonTatCaHoaDon", "F3", "Chọn/Bỏ chọn tất cả hóa đơn", "Chọn/Bỏ chọn tất cả hóa đơn(Dùng cho VCBX chi tiết hóa đơn)", None, F3, FormChonHDLamVCBX)
        UpdatePhimTat("ChonBoChonDongHoaDonChiTiet", "F4", "Chọn/Bỏ chọn dòng hóa đơn chi tiết", "Chọn/Bỏ chọn dòng hóa đơn chi tiết(Dùng cho VCBX chi tiết hóa đơn theo số lượng)", None, F4, FormChonHDLamVCBX)
        UpdatePhimTat("ChiTietHoaDon", "F6", "Chi tiết hóa đơn", "Chi tiết hóa đơn", None, F6, FormChonHDLamVCBX)
        '
        UpdatePhimTat("HDBanLe_ChonHD", "Ctrl & F9", "Chọn hóa đơn", "Chọn hóa đơn", Control, F9, HDBanLe)
        UpdatePhimTat("HDBanLe_SuaCKHD", "F1", "Sửa chiết khấu cả hóa đơn", "Sửa chiết khấu cả hóa đơn", None, F1, HDBanLe)
        UpdatePhimTat("HDBanLe_ThemSPHD", "F3", "Thêm sản phẩm", "Thêm sản phẩm", None, F3, HDBanLe)
        UpdatePhimTat("HDBanLe_SuaSoLuong", "F4", "Sửa Số lượng", "Sửa Số lượng", None, F4, HDBanLe)
        UpdatePhimTat("HDBanLe_SuaCKHD_ChiTiet", "F5", "Sửa chiết khấu", "Sửa chiết khấu", None, F5, HDBanLe)
        UpdatePhimTat("HDBanLe_ChonKho", "F6", "Chọn kho", "Chọn kho", None, F6, HDBanLe)
        UpdatePhimTat("HDBanLe_ThanhToan", "F7", "Thanh toán", "Thanh toán", None, F7, HDBanLe)
        UpdatePhimTat("HDBanLe_XemInHD", "F8", "Xem - In lại hóa đơn", "Xem - In lại hóa đơn", None, F8, HDBanLe)
        UpdatePhimTat("HDBanLe_ChonSanPham", "F9", "Chọn sản phẩm", "Chọn sản phẩm", None, F9, HDBanLe)
        UpdatePhimTat("HDBanLe_ThemMoiHD", "Ctrl & F10", "Thêm mới", "Thêm mới", Control, F10, HDBanLe)
        UpdatePhimTat("HDBanLe_XoaSP", "Ctrl & Delete", "Xóa sản phẩm", "Xóa sản phẩm", Control, Delete, HDBanLe)
        UpdatePhimTat("HDBanLe_ChonKhachHang", "F11", "Chọn khách hàng", "Chọn khách hàng", Control, F11, HDBanLe)
        UpdatePhimTat("HDBanLe_LuuTamHD", "F2", "Lưu tạm hóa đơn", "Lưu tạm hóa đơn", None, F2, HDBanLe)
        UpdatePhimTat("HDBanLe_ChonHDTam", "F12", "Chọn hóa đơn tạm", "Chọn hóa đơn tạm", None, F12, HDBanLe)
        UpdatePhimTat("HDBanLe_ChonMayTinh", "Ctrl & 1", "Máy tính", "Máy tính", Control, Oem1, HDBanLe)
        '
        Load_DMPhimTat()
    End Sub

    Public Shared Function GetInfoKey(ByVal maPhim As String) As clsPhimTat
        Dim Key As New clsPhimTat
        Try
            Key = (From db In vlstPhimTat Where db.MaNut = maPhim Select db).FirstOrDefault
        Catch ex As Exception
            MsgInfo(ex.Message)
        End Try
        Return Key
    End Function

    Public Shared Function isCheckPhimTat(ByVal e As System.Windows.Forms.KeyEventArgs, ByVal Loai As ELoaiPhimTat, Optional ByVal button As DevExpress.XtraBars.BarLargeButtonItem = Nothing) As Boolean
        If button IsNot Nothing AndAlso button.Visibility = DevExpress.XtraBars.BarItemVisibility.Never Then Return False
        Dim _pIdkey = Loai.ToString().Substring(1, Loai.ToString.Length - 1)
        Dim _ObjKey As clsPhimTat = GetInfoKey(_pIdkey)
        If _ObjKey Is Nothing Then Return False
        If (e.Modifiers <> None AndAlso e.Modifiers = _ObjKey.KeyFn AndAlso e.KeyCode = _ObjKey.KeyCode) OrElse e.KeyCode = IIf(_ObjKey.KeyFn <> 0, 0, _ObjKey.KeyCode) Then
            Return True
        End If
        Return False
    End Function
     
End Class

Public Enum ECachLayBanBo As Integer
    BanBoDoNguoiDungTuNhap = 0
    BanBoTrongDanhMuc = 1
    BanBoTuHoaDonNhapGanNhat = 2
    BanBoTrongHopDongGanNhat = 3
End Enum
Public Enum ESXCachTinhBanBo As Integer
    Cach1 = 0 ' Tong so luong / ban bo / 20
    Cach2 = 1 ' Tong so luong / ban bo
End Enum
Public Enum ELoaiPhimTat
    pADD
    pEDIT
    pDELETE
    pCOPY
    pREFRESH
    pINFO
    pEXPORT
    pEXIT
    pFIND
    pACCEPT
    pFINDNEXT
    pPRINT
    pFILTERROW
    pSELECT_UNSELECT_ALL
    pSAVECLOSE
    pSAVENEW
    pROUND_UP
    pROUND_DOWN
    pSAVEPRINT
    pCACULATOR
    pINSERTROW
    pTonKhoKhac
    pChietKhauBanHang
    pHACHTOAN
    pXuatTheoHop
    pChonBoChonTatCaHoaDon
    pChonBoChonDongHoaDonChiTiet
    pChiTietHoaDon
    pHDBanLe_ChonHoaDon
    pHDBanLe_SuaCKHD
    pHDBanLe_ThemSPHD
    pHDBanLe_SuaSoLuong
    pHDBanLe_SuaCKHD_ChiTiet
    pHDBanLe_ChonKho
    pHDBanLe_ThanhToan
    pHDBanLe_XemInHD
    pHDBanLe_ChonSanPham
    pHDBanLe_ThemMoiHD
    pHDBanLe_XoaSP
    pHDBanLe_ChonKhachHang
    pHDBanLe_LuuTamHD
    pHDBanLe_ChonHDTam
    pHDBanLe_ChonMayTinh
    pTinhLaiTonKho
    pChietKhauMuaHang
End Enum